import Vue from "vue";
import Vuex from 'vuex'
Vue.use(Vuex)

export default  new Vuex.Store({
    state:{
        count:0
    },
    getters:{
    //     getter就相当于计算属性，它并不会该百年state中的值，只提过一个加工扩展的作用
    showNum(state){
        return '当前最新的值是：'+state.count
    }
    },
    mutations:{
        add(state){
          state.count++
        },
        add2(state,num){
            state.count+=num
        },
        // 减一
        sub(state){
            state.count--
        },
        // 减n
        subN(state,num){
            state.count-=num
        },
    },
    actions:{
        AddAsync(context){
            setTimeout(() => {
                context.commit('add')
            }, 1000);
        },
        // 异步任务携带参数
        AddNasync(context,step){
            setTimeout(() => {
                context.commit('add2',step)
            }, 1000);
        },
        subAsync(context){
            setTimeout(()=>{
                context.commit('sub')
            },1000)
        },
        // 接受外界传递过来的参数，触发mutations对应的方法并将参数触底过去
        suNasync(context,step){
            setTimeout(()=>{
                context.commit('subN',step)
            },1000)
        },
    },
    modules:{

    }
})